package jogoBolao.iu;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;

import javax.swing.JButton;

import jogoBolao.so.InterfaceRequerida;
import jogoBolaoeArmazenador.rn.Bolao;
import jogoBolaoeArmazenador.rn.Usuario;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


@SuppressWarnings("serial")
public class TelaCotas extends JFrame {
	
	private JFrame _telaQueChamou;
	private Usuario _usuarioQueChamou;
	private Bolao _bolaoParaEntrar;
	private JPanel contentPane;
	private JPanel panelToggleButtons;
	private JButton btnConfirmar;
	private JButton btnSair;
	private JButton btnCancelar;

	/**
	 * Create the frame.
	 */
	public TelaCotas(JFrame tela, Usuario user, Bolao bolao) {
		
		_telaQueChamou = tela;
		_usuarioQueChamou = user;
		_bolaoParaEntrar = bolao;
		
		setTitle("Cotas");
		setResizable(false);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 582, 319);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		panelToggleButtons = new JPanel();
		panelToggleButtons.setBounds(20, 36, 536, 191);
		contentPane.add(panelToggleButtons);
		
		for(int j = 0; j < 6; j++){
			for(int i = 1; i <= 10; i++){
				String indice = "";
				if(i == 10){
					indice += (j+1);
					indice += "0";
				}else{
					indice += j;
					indice += i;
				}

				JToggleButton botao = new JToggleButton(indice);
				botao.setBounds(55*i, 34*j, 45, 23);
				panelToggleButtons.add(botao);

				if(Integer.valueOf(indice) <= _bolaoParaEntrar.get_totalDeCotas()){

					HashMap<Usuario, ArrayList<Integer>> participantes = _bolaoParaEntrar.get_participantes();
					
					ArrayList<Integer> cotasDoUsuarioQueChamou = participantes.get(_usuarioQueChamou);
					
					if(cotasDoUsuarioQueChamou != null && cotasDoUsuarioQueChamou.contains(Integer.valueOf(indice)))
						botao.setSelected(true);
					else{

						Collection<ArrayList<Integer>> cotas = participantes.values();

						Iterator<ArrayList<Integer>> l = cotas.iterator();
						while(l.hasNext()){
							ArrayList<Integer> cotasDosUsuarios = l.next();
							Iterator<Integer> m = cotasDosUsuarios.iterator();
							while(m.hasNext()){
								if(Integer.valueOf(indice) == m.next())
									botao.setEnabled(false);
							}
						}
					}

				}else
					botao.setEnabled(false);
			}
		}
		
		JLabel lblEscolhaSuasCotas = new JLabel("Escolha suas cotas:");
		lblEscolhaSuasCotas.setFont(new Font("Tahoma", Font.BOLD, 15));
		lblEscolhaSuasCotas.setBounds(10, 11, 144, 14);
		contentPane.add(lblEscolhaSuasCotas);
		
		btnConfirmar = new JButton("Confirmar");
		btnConfirmar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				ArrayList<Integer> cotasEscolhidas = new ArrayList<Integer>();
				for(int i = 0; i < 60; i++){
					JToggleButton botao = (JToggleButton) panelToggleButtons.getComponent(i);
					if(botao.isEnabled() && botao.isSelected())
						cotasEscolhidas.add(i+1);
				}
				new InterfaceRequerida().persistirParticipacao(_bolaoParaEntrar, _usuarioQueChamou, cotasEscolhidas);
				_telaQueChamou.setEnabled(true);
				dispose();
			}
		});
		btnConfirmar.setBounds(139, 250, 95, 25);
		contentPane.add(btnConfirmar);
		
		btnSair = new JButton("Sair");
		btnSair.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		btnSair.setBounds(337, 250, 95, 25);
		contentPane.add(btnSair);
		
		btnCancelar = new JButton("Cancelar");
		btnCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				_telaQueChamou.setEnabled(true);
				dispose();
			}
		});
		btnCancelar.setBounds(238, 250, 95, 25);
		contentPane.add(btnCancelar);
		
		setLocationRelativeTo(null);
		
	}
}
